package w83b.w83bManager;

import java.util.ArrayList;
import java.util.List;

import org.apache.commons.lang.StringUtils;

import w83b.w83bBeans.W83bSindicatosBean;
import w83b.w83bBeans.W83bUsuarioXLNetsBean;
import w83b.w83bDAO.W83bFactoriaDAO;
import w83b.w83bDAO.w83bConstantesBD.W83bSindicatosBD;


public class W83bSindicatos implements W83bISindicatos {
	/* (non-Javadoc)
	 * @see w83b.w83bManager.W83bISindicatos#buscarSindicatos(w83b.w83bBeans.W83bSindicatosBean)
	 */
	public java.util.List buscarSindicatos(w83b.w83bBeans.W83bSindicatosBean param) throws Exception{
		
		
		List listaSindicatos = W83bFactoriaDAO.getMantenimientosDAO().buscarSindicatos(param);
		
		return listaSindicatos;	
	}
	/* (non-Javadoc)
	 * @see w83b.w83bManager.W83bISindicatos#borrarSindicatos(java.util.ArrayList)
	 */
	public java.lang.String borrarSindicatos(java.util.ArrayList param) 
	throws Exception {
		boolean resultado = true;
		boolean res = true;
		ArrayList borrar=new ArrayList();
		
		W83bUsuarioXLNetsBean userBean = (W83bUsuarioXLNetsBean)param.get(param.size()-1);
		param.remove(param.size()-1);
		
		for(int i=0;i<param.size();i++){
				res =  W83bFactoriaDAO.getMantenimientosDAO().existeSindicatoAsociacion((String)param.get(i),userBean);
				if(!res){
					borrar.add((String)param.get(i));
				}
		}
		if (borrar.size()>0){	
			if (borrar.size()==param.size()-1){
				resultado=false;
			}
			W83bFactoriaDAO.getMantenimientosDAO().borrarSindicatos(borrar,userBean);
		}
		
		return resultado?"true":"false";
	}
		
	
	/* (non-Javadoc)
	 * @see w83b.w83bManager.W83bISindicatos#anyadirSindicatos(w83b.w83bBeans.W83bSindicatosBean)
	 */
	public String anyadirSindicatos(w83b.w83bBeans.W83bSindicatosBean param)
	throws Exception {
		
		String resultado = "0";
		
		if(StringUtils.isEmpty(param.getCodSindicato())){
			String maxSindicato = W83bFactoriaDAO.getMantenimientosDAO().maxCodSindicato();		
			if(W83bSindicatosBD.maxCodigo.equals(maxSindicato)){
				boolean codEncontrado = false;
				if(Integer.parseInt(maxSindicato)+1
						!=Integer.parseInt(W83bFactoriaDAO.getMantenimientosDAO().contarSindicatos())){
					while(!codEncontrado){
						maxSindicato = String.valueOf(Integer.parseInt(maxSindicato)-1);//NOPMD
						codEncontrado = !W83bFactoriaDAO.getMantenimientosDAO().existeSindicato(maxSindicato);
					}
					param.setCodSindicato(maxSindicato);
					resultado = param.getCodSindicato();
					W83bFactoriaDAO.getMantenimientosDAO().anyadirSindicato(param);		
				}else{
					resultado = "-1";
				}
			}else{				
				maxSindicato = String.valueOf(Integer.parseInt(maxSindicato)+1);//NOPMD
				param.setCodSindicato(maxSindicato);				
				W83bFactoriaDAO.getMantenimientosDAO().anyadirSindicato(param);		
			}
		}else {
			if(!W83bFactoriaDAO.getMantenimientosDAO().existeSindicato(param.getCodSindicato())){	
				W83bFactoriaDAO.getMantenimientosDAO().anyadirSindicato(param);		
			}else{
				resultado = "-2";				
			}
		}		
		
		return resultado;
	}
	
	/* (non-Javadoc)
	 * @see w83b.w83bManager.W83bISindicatos#detalleSindicatos(w83b.w83bBeans.W83bSindicatosBean)
	 */
	public w83b.w83bBeans.W83bSindicatosBean detalleSindicatos(w83b.w83bBeans.W83bSindicatosBean param) throws  java.lang.Exception, java.rmi.RemoteException {
		
		w83b.w83bBeans.W83bSindicatosBean sindicato = W83bFactoriaDAO.getMantenimientosDAO().detalleSindicatos(param);
		
		return sindicato;
	}
	
	/* (non-Javadoc)
	 * @see w83b.w83bManager.W83bISindicatos#modificarSindicatos(w83b.w83bBeans.W83bSindicatosBean)
	 */
	public String modificarSindicatos(W83bSindicatosBean param)
	throws Exception {
		
		String resultado =  W83bFactoriaDAO.getMantenimientosDAO().modificarSindicatos(param);		
		
		return resultado;
	}
}